package br.com.linkers.dao;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Restrictions;

import br.com.linkers.data.HibernateUtil;
import br.com.linkers.entity.Telefones;
import br.com.linkers.entity.Usuarios;

public class UsuarioDAO {

	Session session = HibernateUtil.getSessionFactory().openSession();
	Transaction transaction = session.beginTransaction();

	List<Usuarios> lista;

	public void newSession() {
		this.session = HibernateUtil.getSessionFactory().openSession();
		this.transaction = session.beginTransaction();
	}

	public void inserir(Usuarios usuario) {

		newSession();

		session.persist(usuario);

		transaction.commit();
		session.close();
	}

	public void deletar(Usuarios usuario) {

		newSession();

		session.delete(usuario);

		transaction.commit();
		session.close();
	}

	public void atualizar(Usuarios usuario) {
		newSession();
		session.update(usuario);
		transaction.commit();
		session.close();
	}


	public List<Usuarios> listar() {
		newSession();
		Criteria cri = session.createCriteria(Usuarios.class);
		this.lista = cri.list();
		session.close();
		return this.lista;
	}
	
	public List<Usuarios> listarComFiltro(String filtroNome) {
		newSession();
		Criteria cri = session.createCriteria(Usuarios.class)
				.add(Restrictions.like("nome", filtroNome, MatchMode.ANYWHERE).ignoreCase());
		lista = cri.list();
		session.close();
		return lista;
	}

	public Usuarios buscarPorLoginESenha(String login, String senha) {
		newSession();
		Criteria cri = session.createCriteria(Usuarios.class)
				.add(Restrictions.eq("login", login))
				.add(Restrictions.eq("senha", senha));
		
		List<Usuarios> results = cri.list();
		session.close();
		if(results.size()>0){
			return (Usuarios) results.get(results.size()-1);
		}else{
			return null;
		}
	}
	
	public boolean verificaExistenciaDe(String campo, String valor){
		
		newSession();
		Criteria cri = session.createCriteria(Usuarios.class)
				.add(Restrictions.eq(campo, valor));
		if(cri.list().size()>0){
			return true;
		}else{
			return false;
		}
		
	}
	

}
